package com.d0306;


import java.util.Scanner;

public class Hero {
    //英雄级别
    public int n;
    //经验值
    public int exp;
    //英雄等级对应当最小经验值数组
    int[] minExps = new int[30];
    //实例化代码块 用来给数组赋值
    {
        for(int i = 0;i < minExps.length;i++) {
            minExps[i] = (int)(30 * (Math.pow(i+1,3) + (i + 1) * 5) - 80);
//            //输出等级对应的经验值
//            System.out.println(i+1+"："+minExps[i]);
        }
    }
    //构造方法
    public Hero(){
        this.exp = 0;
    }
    public Hero(int exp) {
        this.exp = exp;
    }
    //获取英雄等级
    public int getN() {
        //返回的等级
        int n = 0;
        //如果经验值为0直接返回0
        if(this.exp == 0) {
            return n;
        }
        //如果英雄的经验值小于英雄等级对应当最小经验值 n = i 等于n = i+1
        for(int i = 0;i < minExps.length;i++)
        {
            if(this.exp < minExps[i]) {
                n = i;
                break;
            }
            if(this.exp == minExps[i]){
                n = i+1;
            }
        }
        return n;
    }

    public static void main(String[] args) {
        //无参英雄对象对应的经验值和等级
        Scanner scanner = new Scanner(System.in);
        Hero hero = new Hero();
        System.out.println("无参英雄的经验值：" + hero.exp);
        System.out.println("无参英雄的等级：" + hero.getN());

        //最大经验值 814420
        int maxExp = (int)(30 * (Math.pow(30,3) + 30 * 5) - 80);
        //初始化英雄的经验值
        int exp = 150;
        //判断经验值是否满足范围
        if(exp < 0 ||exp > maxExp) {
            System.out.println("有参英雄的经验值不合法，请重新定义后运行！！！");
            System.exit(0);
        }
        //有参英雄对象对应的经验值和等级
        Hero hero1 = new Hero(exp);
        System.out.println("有参英雄的经验值：" + hero1.exp);
        System.out.println("有参英雄的等级：" + hero1.getN());
    }
}